using UnityEngine;
using System.Collections;

public class Canabalt : MonoBehaviour {
	
	public TextMesh textScore;
	public GameObject instructions;
	public Axis _AxisJump;
	public Axis _AxisRight;
	public float speedRun;
	public float jumpAmount;
	public Transform cam;
	tk2dAnimatedSprite anim;
	bool dead;
	bool podeAndar = false;
	int count;
	float score;
	
	void Start()
	{
		anim = GetComponent<tk2dAnimatedSprite>();	
	}
	
	void Update () 
	{
		if(Input.GetKeyDown(KeyCode.R))
		{
			Application.LoadLevel(Application.loadedLevel);
		}
		
		//Verifica se o jogo foi estartado, se foi começa a correr
		if(podeAndar)
		{
			score = transform.position.x + 2;
			textScore.text = (Mathf.FloorToInt(score)).ToString() + "m";
			
			//Se não estiver colidindo com nada, movimenta o personagem
			if(!_AxisRight.isGrounded)
			{
				//Pega a atual posição e soma ela a velocidade
				float posX = transform.position.x + ((0.24f+speedRun)*Time.deltaTime);
				transform.position = new Vector3(posX,transform.position.y,transform.position.z);
			}

			if(Input.GetKeyDown("up") || Input.GetKeyDown("w"))
			{
				//Se estiver no chão, ele pula
				if(_AxisJump.isGrounded)
				{
					Jump();
				}
			}
			
			//Se o personagem ficar para tras da camera, ele morre
			if(transform.position.x < cam.position.x - 6.43f)
			{
				GameOver();
			}
			
			//Movimenta a camera
			float camX = cam.position.x + (speedRun*Time.deltaTime);
			cam.position = new Vector3(camX,cam.position.y,cam.position.z);
		}
		
		//Aperta start no inicio do jogo
		if(Input.GetKeyDown("space") && !podeAndar && !dead)
		{
			//Inicia a boolean para correr e executa a animação correr
			podeAndar = true;
			anim.Play("RunZombie");
			Destroy(instructions);
		}		
	}
	
	void Jump()
	{
		//Adiciona uma forca de pulo
		rigidbody.AddForce(0,jumpAmount,0,ForceMode.Impulse);
	}
	
	public void GameOver()
	{
		podeAndar = false;
		dead = true;
		anim.Stop();

		PlayerPrefs.SetInt("Mts",Mathf.FloorToInt(score));
		Application.LoadLevel("Fim");
	}
}
